package com.sishu.websocket4.service.impl;

import cn.dev33.satoken.util.SaResult;
import com.sishu.websocket4.mapper.CardMapper;
import com.sishu.websocket4.pojo.cardInformation;
import com.sishu.websocket4.service.Cardservice;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;

import javax.annotation.Resource;
import java.util.*;
import java.util.concurrent.ThreadLocalRandom;

@Service
public class CardServiceimpl implements Cardservice {
    @Resource
    private CardMapper cardMapper;

    private Set<Integer> usedQuestionIds = Collections.synchronizedSet(new HashSet<>());

    @Override
    public SaResult insertcardinformation(List<cardInformation> cards) {
        for (cardInformation card : cards) {
//            Tiku tiku1 = new Tiku();
//            tiku1.setQuestionId(tiku.getQuestionId());
//            tiku1.setType(tiku.getType());
//            tiku1.setContent(tiku.getContent());
//            tiku1.setOptions(tiku.getOptions());
//            tiku1.setAnswer(tiku.getAnswer());
//            tiku1.setDifficulty(tiku.getDifficulty());
            cardMapper.insert(card);
        }
        return SaResult.ok("题库插入成功");
    }

    @Override
    public SaResult selectcard(cardInformation card) {
        List<cardInformation> cards = cardMapper.selcetAll();//数据库中的题目
        System.out.println("数据库中的tikus = " + cards);
        boolean flag = false;//默认题库中没有之前的题目

        for (cardInformation card1 : cards) {//循环数据库中的题目

            if (card1.getCardName().equals(card.getCardName())){//如果题库中的id和传过来的题目id相等的话
                flag = true;//有这个题目
                break;
//                return SaResult.error("题库已经有" + tiku.getContent() + "此题了,麻烦更换题目");

            }
        }
        if (flag) {
            return SaResult.error("已经有" + card.getCardName() + "卡片了,麻烦更换卡片");
        }
        return SaResult.ok("没有这些卡片,可以添加");
    }

    @Override
    public SaResult getRandomcard() {
        List<cardInformation> allCards = cardMapper.selcetAll();//查询数据库中所有的题目放到一个list中
        if (CollectionUtils.isEmpty(allCards)) {//如果数据库中没有数据那么会返回题库为空
            return SaResult.error("题库为空");
        }

        List<cardInformation> availableCards = new ArrayList<>();//存储未被使用过的题目
        for (cardInformation card : allCards) {
            if (!usedQuestionIds.contains(card.getCardId())) {//遍历 allTikus 列表，检查每个题目的 questionId 是否在 usedQuestionIds 集合中
                availableCards.add(card);//如果 questionId 不在 usedQuestionIds 中，将该题目添加到 availableTikus 列表中
            }
        }

        if (availableCards.isEmpty()) {
            // 所有题目都已使用过，清空已使用的集合
            usedQuestionIds.clear();
            availableCards.addAll(allCards);
        }

        // 随机选择一个题目
        int randomIndex = ThreadLocalRandom.current().nextInt(availableCards.size());
        cardInformation selectedCard= availableCards.get(randomIndex);

        // 记录已使用的 questionId
        usedQuestionIds.add(selectedCard.getCardId());

        return SaResult.ok("随机题目获取成功").setData(selectedCard);
    }

//    @Override
//    public SaResult Tikuanswer(String id, String answer) {
//       // 根据题目ID查询题目
//        Tiku selectbyquestionid = cardMapper.selectbyquestionid(id);
//        if (selectbyquestionid==null){
//            return SaResult.error("题目不存在");
//        }
//        else{
//            if (selectbyquestionid.getAnswer().equals(answer)) {
//                return SaResult.ok("答案正确");
//            } else {
//                return SaResult.error("答案错误");
//            }
//        }
//    }





//    List<User> users = userMapper.selectAll();
//        System.out.println("数据库users = " + users);
//    boolean flag = false;
//        for (User user1 : users) {
//        if (user1.getUserId().equals(user.getUserId())&&user1.getUserName().equals(user.getUserName())){
//            flag = true;
//            return SaResult.ok("用户存在");
//        }
//    }
//         if (flag){
//        return SaResult.error(user.getUserId()+"用户不存在,无法创建小组");
//    }
//        return SaResult.error("未知错误");
}
